{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 逆向分析爬取动态网页"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests\n",
    "rqq=requests.get('https://www.ptpress.com.cn/bookinfo/getBookListForWS')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>书名</th>\n",
       "      <th>价格</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>SSM与Spring Boot开发实战</td>\n",
       "      <td>99.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>H5页面设计与制作（全彩慕课版）</td>\n",
       "      <td>69.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>人力资源管理实操从入门到精通 第2版</td>\n",
       "      <td>69.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>爱因斯坦的怪物  探索黑洞的奥秘</td>\n",
       "      <td>55.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>品牌偏爱 抢占心智的品牌营销方法论</td>\n",
       "      <td>59.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>服装直播卖货超级口才训练</td>\n",
       "      <td>59.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>去繁从简 交互设计知识体系精讲</td>\n",
       "      <td>69.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>看图学男性家庭健身（视频版）</td>\n",
       "      <td>49.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>5分钟的手绘时光 彩铅恋物志</td>\n",
       "      <td>45.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Illustrator CC 2019实例教程（第6版）（微课版）</td>\n",
       "      <td>59.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>纸短琴长 古筝流行改编曲谱集 纯筝独奏版</td>\n",
       "      <td>59.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>行政办公后勤流程设计与工作标准</td>\n",
       "      <td>89.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>少儿编程趣学指南：Scratch3.0篇+Python篇 （全2册，全彩印刷）</td>\n",
       "      <td>69.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>网络营销——基础、策略与工具（第2版）</td>\n",
       "      <td>56.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>素描头像 人物五官画法超详细讲解</td>\n",
       "      <td>49.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>体适能教学与训练指导初中和高中阶段 第3版</td>\n",
       "      <td>98.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>围棋对杀二选一从入门到精通 级位篇</td>\n",
       "      <td>35.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>少儿篮球训练游戏3~12岁</td>\n",
       "      <td>49.8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                         书名    价格\n",
       "0                       SSM与Spring Boot开发实战  99.0\n",
       "1                          H5页面设计与制作（全彩慕课版）  69.8\n",
       "2                        人力资源管理实操从入门到精通 第2版  69.8\n",
       "3                          爱因斯坦的怪物  探索黑洞的奥秘  55.0\n",
       "4                         品牌偏爱 抢占心智的品牌营销方法论  59.8\n",
       "5                              服装直播卖货超级口才训练  59.0\n",
       "6                           去繁从简 交互设计知识体系精讲  69.0\n",
       "7                            看图学男性家庭健身（视频版）  49.8\n",
       "8                            5分钟的手绘时光 彩铅恋物志  45.0\n",
       "9         Illustrator CC 2019实例教程（第6版）（微课版）  59.8\n",
       "10                     纸短琴长 古筝流行改编曲谱集 纯筝独奏版  59.8\n",
       "11                          行政办公后勤流程设计与工作标准  89.8\n",
       "12  少儿编程趣学指南：Scratch3.0篇+Python篇 （全2册，全彩印刷）  69.0\n",
       "13                      网络营销——基础、策略与工具（第2版）  56.0\n",
       "14                         素描头像 人物五官画法超详细讲解  49.8\n",
       "15                    体适能教学与训练指导初中和高中阶段 第3版  98.0\n",
       "16                        围棋对杀二选一从入门到精通 级位篇  35.0\n",
       "17                            少儿篮球训练游戏3~12岁  49.8"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import json\n",
    "import pandas as pd\n",
    "data=json.loads(rqq.content.decode('utf-8'))#转成json文件数据，字典格式\n",
    "bookName=[i['bookName'] for i in data['data']]\n",
    "price=[i['price'] for i in data['data']]\n",
    "author=[i['author'] for i in data['data']]\n",
    "pd.DataFrame({'书名':bookName,'价格':price,'书名':bookName})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用Selenium爬取动态网页"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from selenium import webdriver\n",
    "driver=webdriver.Chrome()#打开一个浏览器（用哪个浏览器的插件就打开那个浏览器）\n",
    "driver.get('http://www.ptpress.com.cn/shopping/index')#再新打开的浏览器中打开目标网页"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'<!DOCTYPE html><html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"zh-CN\"><head>\\n  <meta charset=\"utf-8\" />\\n  <meta name=\"”renderer”\" content=\"”webkit”\" />\\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\\n  <title>人民邮电出版社</title>\\n  \\n\\n<link rel=\"shortcut icon\" href=\"/static/eleBusiness/img/favicon.ico\" charset=\"UTF-8\" />\\n<link rel=\"stylesheet\" href=\"/static/plugins/bootstrap/css/bootstrap.min.css\" />\\n<link rel=\"stylesheet\" href=\"/static/portal/css/iconfont.css\" />\\n<link rel=\"stylesheet\" href=\"/static/portal/tools/iconfont.css\" />\\n<link rel=\"stylesheet\" href=\"/static/portal/css/font.css\" />\\n<link rel=\"stylesheet\" href=\"/static/interface/css/sitefont.css\" />\\n<link rel=\"stylesheet\" href=\"/static/interface/css/common.css\" />\\n<link rel=\"stylesheet\" href=\"/static/interface/css/bar.css\" />\\n<link rel=\"stylesheet\" href=\"/static/interface/css/header.css\" />\\n<link rel=\"stylesheet\" href=\"/static/interface/css/footer.css\" />\\n\\n<script type=\"text/javascript\" async=\"\" src=\"https://dn-growing.qbox.me/vds.js\"></script><script type=\"text/javascript\" src=\"/static/portal/js/jquery-1.11.3.min.js\"></script>\\n<script type=\"text/javascript\" src=\"/static/dist/js/vue.js\"></script>\\n\\n<script type=\"text/javascript\">\\n    var _vds = _vds || [];\\n    window._vds = _vds;\\n    (function(){\\n        _vds.push([\\'setAccountId\\', \\'9311c428042bb76e\\']);\\n        (function() {\\n            var vds = document.createElement(\\'script\\');\\n            vds.type=\\'text/javascript\\';\\n            vds.async = true;\\n            vds.src = (\\'https:\\' == document.location.protocol ? \\'https://\\' : \\'http://\\') + \\'dn-growing.qbox.me/vds.js\\';\\n            var s = document.getElementsByTagName(\\'script\\')[0];\\n            s.parentNode.insertBefore(vds, s);\\n        })();\\n    })();\\n</script>\\n\\n  <link rel=\"stylesheet\" href=\"/static/portal/css/swiper-3.4.1.min.css\" />\\n  <script type=\"text/javascript\" src=\"/static/portal/js/swiper-3.4.1.jquery.min.js\"></script>\\n  <link rel=\"stylesheet\" href=\"/static/interface/css/mall.css\" />\\n</head>\\n<body>\\n<!-- header -->\\n\\n\\n\\n<div id=\"header\"><div class=\"container\"><div class=\"row header\"><div class=\"col-md-4\"><a href=\"/\" class=\"logo\"><img src=\"/static/interface/img/logo.png\" alt=\"人民邮电出版社有限公司\" /></a></div> <div class=\"col-md-8 tools\"><div class=\"jump\"><a href=\"/login\" target=\"_blank\">登录</a> |\\n          <a href=\"/reg\">注册</a> <!----></div> <div class=\"search\"><input type=\"text\" placeholder=\"书名、作者、书号、关键词\" /> <button type=\"button\">搜索</button></div></div></div></div> <div class=\"container-fluid navigator\"><div class=\"row\"><div class=\"container nav-box\"><div class=\"row\"><a href=\"javascript:;\" class=\"item\">首页</a><a href=\"javascript:;\" class=\"item\">工作动态</a><a href=\"javascript:;\" class=\"item\">企业党建</a><a href=\"javascript:;\" class=\"active item\">图书</a><a href=\"javascript:;\" class=\"item\">期刊</a><a href=\"javascript:;\" class=\"item\">服务</a><a href=\"javascript:;\" class=\"item\">招贤纳士</a><a href=\"javascript:;\" class=\"item\">关于我们</a></div></div></div></div></div>\\n\\n<script>\\n  let header = new Vue({\\n    el: \\'#header\\',\\n    data: {\\n        keyword: \\'\\',\\n        userName: \\'\\',\\n        cartNum: 0,\\n        navList: [],\\n        thisUrl: window.location.pathname\\n    },\\n    mounted: function() {\\n      if (\\'\\' === \\'1\\')\\n        this.toService()\\n      this.getUserInfo()\\n      this.getNavigator()\\n    },\\n    methods: {\\n      /**\\n       * 滚动到服务\\n       **/\\n      toService: function() {\\n        setTimeout(function () {\\n          let _top = $(\\'#service\\').offset().top - 50;\\n          $(\\'body,html\\').animate({\\n            scrollTop: _top + \\'px\\'\\n          }, 500);\\n        }, 500);\\n      },\\n      \\n      getUserInfo: function() {\\n        let $this = this\\n        $.ajax({\\n          url: \\'/login/getUserName\\',\\n          success: function (res) {\\n            if (res.success) {\\n              $this.userName = res.data\\n              $this.getCartNum()\\n            }\\n          }\\n        });\\n      },\\n      \\n      toSearch: function() {\\n        let $this = this\\n        window.open(\\'/search?keyword=\\' + $this.keyword)\\n      },\\n      \\n      getCartNum: function() {\\n        let $this = this\\n        if ($this.userName) {\\n          $.ajax({\\n            type: \\'POST\\',\\n            url: \\'/shopCart/getShopCartList\\',\\n            dataType: \\'json\\',\\n            async: false,\\n            success: function (res) {\\n              $this.items = res.data;\\n              let carSums = 0;\\n              $.each($this.items, function (index, item) {\\n                carSums += item.quantity;\\n              });\\n              $this.cartNum = carSums;\\n            },\\n            error: function (msg) {\\n              console.log(msg);\\n            }\\n          });\\n        }\\n      },\\n      \\n      getNavigator: function() {\\n        let $this = this\\n        $.ajax({\\n          url: \\'/headNav/getHeadNavForGrid\\',\\n          success: function (res) {\\n            if (res.success) {\\n              $this.navList = res.data\\n            }\\n          }\\n        });\\n      },\\n      \\n      navClick: function(data) {\\n        let $this = this\\n        let url = data.urlType === 2 ? data.sectionUrl : \\'\\' + data.sectionUrl\\n        let target = data.sectionUrl.indexOf(\\'http\\') &gt;= 0\\n        if (data.sectionUrl === \\'#sevice\\') {\\n          if ($this.thisUrl !== \\'/\\') window.location.href = \\'/?path=1\\'\\n          else $this.toService()\\n        } else if (target)\\n          window.open(url)\\n        else window.location.href = url\\n      }\\n    }\\n  })\\n</script>\\n\\n<div class=\"container\">\\n  <!-- 轮播 -->\\n  <div class=\"row line\">\\n    \\n\\n<div class=\"banner\">\\n    <div class=\"swiper-container slide_box swiper-container-horizontal\">\\n        <div class=\"swiper-wrapper\" id=\"banner_slide\" style=\"transform: translate3d(-7200px, 0px, 0px); transition-duration: 1000ms;\"><div class=\"swiper-slide swiper-slide-duplicate swiper-slide-duplicate-active\" data-swiper-slide-index=\"5\" style=\"width: 1200px;\"><a href=\"shopping/buy?bookId=132fabb0-cc01-4866-93ca-9a740baf9ec2\" target=\"_blank\"><img src=\"/upload/2020/06/22f6a3a567ab4161a59439ebeba97706.png\" alt=\"5\" /></a></div><div class=\"swiper-slide swiper-slide-duplicate-next\" data-swiper-slide-index=\"0\" style=\"width: 1200px;\"><a href=\"/p/news/1569366246035.html\" target=\"_blank\"><img src=\"/upload/2019/10/144ebc65d63c476892e94fb10749ff7e.jpg\" alt=\"0\" /></a></div><div class=\"swiper-slide\" data-swiper-slide-index=\"1\" style=\"width: 1200px;\"><a href=\"shopping/buy?bookId=bd28df41-e1e9-499d-9672-6e31bdaba7f4\" target=\"_blank\"><img src=\"/upload/2020/06/c5ccea91d95a4a388900871548c3dc6c.png\" alt=\"1\" /></a></div><div class=\"swiper-slide\" data-swiper-slide-index=\"2\" style=\"width: 1200px;\"><a href=\"shopping/buy?bookId=bd702bff-21f3-4407-8e0c-26956f11a83d\" target=\"_blank\"><img src=\"/upload/2020/06/5416dd7b3d014455a4387c0833c56082.jpg\" alt=\"2\" /></a></div><div class=\"swiper-slide\" data-swiper-slide-index=\"3\" style=\"width: 1200px;\"><a href=\"shopping/buy?bookId=145eeb08-0e5f-464c-a1e9-e0456c998ce0\" target=\"_blank\"><img src=\"/upload/2020/06/7bbb2cd4709d41bf876de387000ce36f.jpg\" alt=\"3\" /></a></div><div class=\"swiper-slide swiper-slide-prev\" data-swiper-slide-index=\"4\" style=\"width: 1200px;\"><a href=\"shopping/buy?bookId=79e22fdb-58e2-4e29-8630-b7e922925e9f\" target=\"_blank\"><img src=\"/upload/2020/06/83d64c65f480436eab888a9604680ebc.jpg\" alt=\"4\" /></a></div><div class=\"swiper-slide swiper-slide-active\" data-swiper-slide-index=\"5\" style=\"width: 1200px;\"><a href=\"shopping/buy?bookId=132fabb0-cc01-4866-93ca-9a740baf9ec2\" target=\"_blank\"><img src=\"/upload/2020/06/22f6a3a567ab4161a59439ebeba97706.png\" alt=\"5\" /></a></div><div class=\"swiper-slide swiper-slide-duplicate swiper-slide-next\" data-swiper-slide-index=\"0\" style=\"width: 1200px;\"><a href=\"/p/news/1569366246035.html\" target=\"_blank\"><img src=\"/upload/2019/10/144ebc65d63c476892e94fb10749ff7e.jpg\" alt=\"0\" /></a></div></div>\\n        <!-- 如果需要分页器 -->\\n        <div class=\"swiper-pagination slide_page swiper-pagination-bullets\"><span class=\"swiper-pagination-bullet\"></span><span class=\"swiper-pagination-bullet\"></span><span class=\"swiper-pagination-bullet\"></span><span class=\"swiper-pagination-bullet\"></span><span class=\"swiper-pagination-bullet\"></span><span class=\"swiper-pagination-bullet swiper-pagination-bullet-active\"></span></div>\\n\\n        <!-- 如果需要导航按钮 -->\\n        <div class=\"swiper-button-prev slide_button slide_prev\">\\n            <i class=\"icon siteFont site-left\"></i>\\n        </div>\\n        <div class=\"swiper-button-next slide_button slide_next\">\\n            <i class=\"icon siteFont site-right\"></i>\\n        </div>\\n    </div>\\n</div>\\n\\n<script type=\"text/javascript\">\\n    $(function () {\\n        $.ajax({\\n            type: \\'post\\',\\n            url: \\'/photos/getEBCarouselListForPortal\\',\\n            dataType: \\'json\\',\\n            success: function (data) {\\n                $.each(data.data, function (index, item) {\\n                    var sectionUrl = \\'\\';\\n                    if (item.urlType == 2) {\\n                        sectionUrl = item.photoUrl;\\n                    } else {\\n                        var time = new Date();\\n                        sectionUrl = \\'\\' + item.photoUrl;\\n                    }\\n                    var str = sectionUrl === \"javascript:void(0);\" ? \\'&lt;div class=\"swiper-slide\"&gt;&lt;a href=\"\\' + sectionUrl +\\n                        \\'\"&gt;&lt;img src=\"\\' + item.picPath + \\'\" alt=\"\\' + index + \\'\"&gt;&lt;/a&gt;&lt;p&gt;\\' +\\n                        item.mainTitle + \\'&lt;/p&gt;&lt;/div&gt;\\' :\\n                        \\'&lt;div class=\"swiper-slide\"&gt;&lt;a href=\"\\' + sectionUrl +\\n                        \\'\" target=\"_blank\"&gt;&lt;img src=\"\\' + item.picPath + \\'\" alt=\"\\' + index + \\'\"&gt;&lt;/a&gt;&lt;/div&gt;\\';\\n                    $(\\'#banner_slide\\').append(str);\\n                });\\n                var mySwiper = new Swiper(\\'.slide_box\\', {\\n                    direction: \\'horizontal\\',\\n                    loop: true,\\n                    autoplay: 3000,\\n                    simulateTouch: false,\\n                    speed: 1000,\\n                    effect: \\'slide\\',\\n\\n                    pagination: \\'.slide_page\\',\\n\\n                    nextButton: \\'.slide_next\\',\\n                    prevButton: \\'.slide_prev\\'\\n                });\\n\\n                $(\\'.slide_page\\').on(\\'mouseover\\', \\'.swiper-pagination-bullet\\', function () {\\n                    var index = $(this).index();\\n                    if (index + 1 !== mySwiper.activeIndex) {\\n                        mySwiper.slideTo(index + 1, 500, false);//切换到第一个slide，速度为1秒\\n                    }\\n                });\\n                $(\\'.slide_box\\').hover(function () {\\n                    mySwiper.stopAutoplay();\\n                }, function () {\\n                    mySwiper.startAutoplay();\\n                });\\n            }\\n        });\\n    });\\n</script>\\n\\n  </div>\\n  <!-- 热销图书 -->\\n  <div class=\"row line\">\\n    <div class=\"col\">\\n      \\n\\n<div id=\"hotBook\" class=\"new-book\"><div class=\"title\"><i class=\"hotbook\"></i> <span>热销图书</span> <a href=\"/shopping/search?tag=search&amp;orderStr=hot&amp;level1=75424c57-6dd7-4d1f-b6b9-8e95773c0593\">更多</a></div> <div class=\"main\"><div class=\"tabs\"><span class=\"active\">经管</span><span class=\"\">工业现代化</span><span class=\"\">少儿</span><span class=\"\">集邮</span><span class=\"\">科普</span><span class=\"\">生活娱乐</span><span class=\"\">机电</span><span class=\"\">电子</span><span class=\"\">计算机</span><span class=\"\">数学与统计学</span><span class=\"\">通信</span><span class=\"\">交通</span><span class=\"\">外语</span><span class=\"\">心理学</span><span class=\"\">艺术传媒</span><span class=\"\">其他</span></div> <div class=\"list\"><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=c44b8d45-6a91-4800-b91c-c3392379b208\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-24669-1/72jpg/24669_s300.jpg\" alt=\"番茄工作法图解：简单易行的时间管理方法\" /></div> <p>番茄工作法图解：简单易行的时间管理方法</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=25c373dc-e599-4036-8534-a102aad0a776\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-41359-8/72jpg/41359_s300.jpg\" alt=\"聪明的投资者（原本第4版,平装本）\" /></div> <p>聪明的投资者（原本第4版,平装本）</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=ebb3164d-06af-41f5-85bd-60f95a5e09cb\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-48382-9/72jpg/48382_s300.jpg\" alt=\"即兴演讲 掌控人生关键时刻\" /></div> <p>即兴演讲 掌控人生关键时刻</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=f642f34c-9f46-4a6f-ad15-c9b9b2875004\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-29236-0/72jpg/29236_s300.jpg\" alt=\"股票大作手操盘术——融合时间和价格的利弗莫尔准则\" /></div> <p>股票大作手操盘术——融合时间和价格的利弗莫尔准则</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=4d1c7610-10d7-4d4b-a2f2-dd702983ff8d\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-37407-3/72jpg/37407_s300.jpg\" alt=\"极简主义 风靡欧美的工作与生活理念\" /></div> <p>极简主义 风靡欧美的工作与生活理念</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=67e260c3-b0cb-41bb-b698-6f9dbd54a610\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-41358-1/72jpg/41358_s300.jpg\" alt=\"聪明的投资者（第4版，注疏点评版）\" /></div> <p>聪明的投资者（第4版，注疏点评版）</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=5e6fe0f3-6ee7-40c2-8c25-9cdf9b0c87e6\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-53619-8/72jpg/53619.jpg\" alt=\"心 稻盛和夫的一生嘱托\" /></div> <p>心 稻盛和夫的一生嘱托</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=3eee0747-bfd0-49b1-86b4-18d838480264\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-48908-1/72jpg/48908_s300.jpg\" alt=\"活好 我这样活到105岁\" /></div> <p>活好 我这样活到105岁</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=6498a974-0db5-4379-bb77-eaf098e57a28\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-48388-1/72jpg/48388_s300.jpg\" alt=\"政府会计制度详解与实务 条文解读 实务应用 案例讲解\" /></div> <p>政府会计制度详解与实务 条文解读 实务应用 案例讲解</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=c7309aeb-a7bc-45e4-9818-47bc4b5579f4\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-51023-5/72jpg/51023_s300.jpg\" alt=\"低风险创业\" /></div> <p>低风险创业</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=ca2de4df-b928-47a8-b8ce-5a725106df07\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-38808-7/72jpg/38808_s300.jpg\" alt=\"从零开始学炒股：股票入门与实战（全彩图解版）\" /></div> <p>从零开始学炒股：股票入门与实战（全彩图解版）</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=df51085f-1fbd-4d41-9e55-d8ee1b968279\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-25369-9/72jpg/25369_s300.jpg\" alt=\"聪明的投资者(原本第4版)\" /></div> <p>聪明的投资者(原本第4版)</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=dd8ecfc3-07bd-44f5-9eea-f6dd3130bbed\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-41092-4/72jpg/41092_s300.jpg\" alt=\"硅谷之谜\" /></div> <p>硅谷之谜</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=4454c799-f074-4517-8618-d14e93a0d941\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-47029-4/72jpg/47029_s300.jpg\" alt=\"大学之路 陪女儿在美国选大学 第二版\" /></div> <p>大学之路 陪女儿在美国选大学 第二版</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=b30101e0-a238-445f-95d9-1ecc8f0fc290\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-39479-8/72jpg/39479_s300.jpg\" alt=\"管理就是带团队：带出高效团队就靠这几招\" /></div> <p>管理就是带团队：带出高效团队就靠这几招</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=37a7e188-cdbb-479f-b208-35ddec518a24\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-39495-8/72jpg/39495_s300.jpg\" alt=\"善用时间：90天重塑习惯升级人生\" /></div> <p>善用时间：90天重塑习惯升级人生</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=0b87f701-bc08-41a8-b2f8-ce6cb77983ee\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-37142-3/72jpg/37142_s300.jpg\" alt=\"别让人生，输给了心情\" /></div> <p>别让人生，输给了心情</p></a></div></div><div class=\"item\"><div class=\"box\"><a href=\"/shopping/buy?bookId=93927df2-0cb3-42f9-ac8b-a4ec04124e72\" target=\"_blank\"><div class=\"img\"><img src=\"http://47.93.163.221:8084/uploadimg/Material/978-7-115-42630-7/72jpg/42630_s300.jpg\" alt=\"电子商务概论（第3版）\" /></div> <p>电子商务概论（第3版）</p></a></div></div></div></div></div>\\n<script>\\n  let hotBook = new Vue({\\n    el: \\'#hotBook\\',\\n    data: {\\n        tagList: [],\\n        active: 0,\\n        list: [],\\n        hotTagId: \\'\\'\\n    },\\n    mounted: function() {\\n      this.getTagList()\\n    },\\n    methods: {\\n      //获取分类\\n      getTagList: function() {\\n        let $this = this\\n        $.ajax({\\n          url: \\'/hotBook/getParentTagIdList\\',\\n          method: \\'get\\',\\n          dataType: \\'json\\',\\n          success: function(res) {\\n            $this.tagList = res.data\\n            $this.hotTagId = res.data[0].PARENTTAGID\\n            if (res.data.length) $this.getList(res.data[0].PARENTTAGID, -1)\\n          }\\n        })\\n      },\\n      //获取图书列表\\n      getList: function(id, index) {\\n        let $this = this\\n        $this.active = index === -1 ? $this.active : index\\n        $.ajax({\\n          url: \\'/hotBook/getHotBookList\\',\\n          data: {\\n            parentTagId: id,\\n            rows: 18,\\n            page: 1\\n          },\\n          success: function(res) {\\n            $this.list = res.data.rows\\n          }\\n        })\\n      }\\n    }\\n  })\\n</script>\\n\\n    </div>\\n  </div>\\n</div>\\n<!-- footer -->\\n\\n\\n<div id=\"footer\" class=\"container-fluid\"><div class=\"row\"><div class=\"top\"><div class=\"container\"><div class=\"row\"><div class=\"list\"><dl><dt>关于我们</dt> <dd><a href=\"https://www.ptpress.com.cn/about?id=c7cd9bc8-3526-4485-bfc4-75d6014e5643\" target=\"_blank\">社长寄语</a></dd><dd><a href=\"https://www.ptpress.com.cn/about?id=3120fe36-6627-4828-8bcf-9db8b0770abf\" target=\"_blank\">企业简介</a></dd><dd><a href=\"https://www.ptpress.com.cn/about?id=b7d42566-cf9c-4290-877a-c98cca1bd593\" target=\"_blank\">组织机构</a></dd><dd><a href=\"https://www.ptpress.com.cn/about?id=185ad723-f0ac-46ca-8f5f-b0dfed02f1d6\" target=\"_blank\">部门介绍</a></dd></dl><dl><dt>联系我们</dt> <dd><a href=\"/p/z/1500018735928.html\" target=\"_blank\">读者服务</a></dd><dd><a href=\"/p/z/1592978151566.html\" target=\"_blank\">销售渠道服务</a></dd><dd><a href=\"/author\" target=\"_blank\">投稿咨询</a></dd><dd><a href=\"http://www.ryjiaoyu.com/article/72\" target=\"_blank\">教材服务</a></dd><dd><a href=\"http://www.ptpress.com.cn:8989\" target=\"_blank\">图书馆服务</a></dd><dd><a href=\"http://dealer.ptpress.cn\" target=\"_blank\">经销商园地</a></dd></dl><dl><dt>社属公司</dt> <dd><a href=\"http://www.childrenfun.com.cn/\" target=\"_blank\">童趣出版</a></dd><dd><a href=\"https://m.weibo.cn/p/1005051935391743\" target=\"_blank\">普华文化</a></dd><dd><a href=\"http://www.ituring.com.cn/\" target=\"_blank\">图灵文化</a></dd><dd><a href=\"http://www.zhiyuanbooks.com\" target=\"_blank\">智元微库</a></dd></dl><dl><dt>友情链接</dt> <dd><a href=\"http://www.miit.gov.cn/\" target=\"_blank\">工业和信息化部</a></dd><dd><a href=\"http://www.nppa.gov.cn/?from=timeline&amp;amp;isappinstalled=0\" target=\"_blank\">国家新闻出版署</a></dd><dd><a href=\"http://www.ciitp.com.cn/\" target=\"_blank\">中国工信出版传媒集团</a></dd><dd><a href=\"https://www.phei.com.cn\" target=\"_blank\">电子工业出版社</a></dd><dd><a href=\" http://www.bjxintong.com.cn\" target=\"_blank\">信通传媒</a></dd></dl></div> <div class=\"code\"><div class=\"item\"><div class=\"img\"><img src=\"/static/portal/img/wx.png\" alt=\"官方微信\" /></div> <h2>关注微信</h2> <p>获取专属服务特权</p></div> <div class=\"item\"><div class=\"img\"><img src=\"/static/portal/img/wd.png\" alt=\"官方微店\" /></div> <h2>关注微店</h2> <p>立即领取60元优惠券</p></div></div></div></div></div> <div class=\"bottom\"><p>人民邮电出版社 京ICP备 05035396号-1 All rights reserved <i>Copyright<span>©</span>1998-2017</i></p> <p>\\n        出版物经营许可证：新出发京批字第版0151号\\n        <a href=\"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010602130054\" target=\"_blank\"><img src=\"/static/portal/img/icon.png\" />京公网安备11010602130054号\\n        </a></p></div></div></div>\\n<script>\\n  let footer = new Vue({\\n    el: \\'#footer\\',\\n    data: {\\n        list: []\\n    },\\n    mounted: function() {\\n      this.getList()\\n    },\\n    methods: {\\n      /**\\n       * 获取底部导航列表\\n       **/\\n      getList: function() {\\n        let $this = this\\n        $.ajax({\\n          url: \\'/bottomNav/getBottomNavForGrid\\',\\n          method: \\'get\\',\\n          dataType: \\'json\\',\\n          success: function(res) {\\n            $this.list = res.data\\n          }\\n        })\\n      }\\n    }\\n  })\\n</script>\\n\\n<!-- right bar -->\\n\\n\\n<div class=\"right-bar\">\\n  <div class=\"item\">\\n    <a href=\"javascript:;\">\\n      <i class=\"siteFont site-kefu\"></i>\\n      <p>服务</p>\\n    </a>\\n    <div class=\"tools_img\">\\n      <h3>工 作 日：8:30 - 17:00</h3>\\n      <h3>联系电话：010-81055052</h3>\\n    </div>\\n  </div>\\n  <div class=\"item\">\\n    <a href=\"javascript:;\">\\n      <i class=\"siteFont site-wechat\"></i>\\n      <p>关注微信</p>\\n    </a>\\n    <div class=\"tools_img\">\\n      <img src=\"/static/portal/img/wx.png\" alt=\"官方微信\" />\\n      <div>\\n        <p>关注微信</p>\\n        <p>获取专属服务特权</p>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\"item\">\\n    <a href=\"https://rmydcbs.tmall.com/\" target=\"_blank\">\\n      <i class=\"siteFont site-tmall\"></i>\\n      <p>天猫旗舰店</p>\\n    </a>\\n  </div>\\n  <div class=\"item goBack\" style=\"display: none;\">\\n    <a href=\"javascript:;\">\\n      <i class=\"siteFont site-top\"></i>\\n      <p>返回顶部</p>\\n    </a>\\n  </div>\\n</div>\\n\\n<script>\\n  if ($(window).width() &lt; 768) {\\n    $(\\'.right-bar\\').hide();\\n  }\\n  $(window).scroll(function () {\\n    let _t = $(window).scrollTop();\\n    if (_t &lt; 100) {\\n      $(\\'.goBack\\').hide();\\n    } else {\\n      $(\\'.goBack\\').show();\\n    }\\n  });\\n  $(document).on(\\'click\\', \\'.goBack\\', function (e) {\\n    $(\\'body,html\\').animate({\\n      scrollTop: 0\\n    }, 500);\\n  });\\n</script>\\n\\n\\n\\n\\n</body></html>'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "driver.page_source#渲染原始网页，会获取到服务器上的信息，（获取网页信息）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#driver.close#关闭新开的网页"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 页面等待（显式等待）来定位到某个元素可以点击的时候，才执行下面的操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from selenium import webdriver\n",
    "from selenium.webdriver.support import expected_conditions as EC\n",
    "from selenium.webdriver.support.ui import WebDriverWait\n",
    "from selenium.webdriver.common.by import By\n",
    "\n",
    "driver=webdriver.Chrome()#打开一个浏览器（用哪个浏览器的插件就打开那个浏览器）\n",
    "driver.get('http://www.ptpress.com.cn/shopping/index')\n",
    "\n",
    "wait= WebDriverWait(driver,10)#等待10s，没用出来就报错\n",
    "\n",
    "confirm_btn=wait.until(EC.element_to_be_clickable(#一直到对应的元素能被点击\n",
    "    (By.CSS_SELECTOR,'#header > div.container > div > div.col-md-8.tools > div.search > input[type=\"text\"]')\n",
    "    #通过selector定位，看搜索键是否会被点击\n",
    "))\n",
    "\n",
    "#driver.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<selenium.webdriver.remote.webelement.WebElement (session=\"80b08e732664d4d6f51514f6238f43e1\", element=\"0.14124939479967957-1\")>\n"
     ]
    }
   ],
   "source": [
    "print(confirm_btn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "driver.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用selenium获取图书信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from selenium import webdriver\n",
    "from selenium.webdriver.support import expected_conditions as EC\n",
    "from selenium.webdriver.support.ui import WebDriverWait\n",
    "from selenium.webdriver.common.by import By\n",
    "\n",
    "driver=webdriver.Chrome()#打开一个浏览器（用哪个浏览器的插件就打开那个浏览器）\n",
    "driver.get('http://www.ptpress.com.cn/shopping/index')\n",
    "\n",
    "wait= WebDriverWait(driver,10)#等待10s，没用出来就报错"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "before=driver.current_window_handle#打开新的窗口后，给当前窗口做标记"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "search_btn=driver.find_element_by_css_selector(#根据selector找到对应的元素（selector是网页检查右键的copyselector）\n",
    "   '#header > div.container > div > div.col-md-8.tools > div.search > input[type=\"text\"]'\n",
    ")\n",
    "search_btn.send_keys('python编程')#关键字的传输"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "confirm_btn=wait.until(#显式等待，直到元素被点击\n",
    " EC.element_to_be_clickable(\n",
    " (By.CSS_SELECTOR,'#header > div.container > div > div.col-md-8.tools > div.search > button')\n",
    " )\n",
    ")\n",
    "confirm_btn.click()#点击"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['CDwindow-576E6109AA3016B9A19B5FFCF3C1FB46',\n",
       " 'CDwindow-46D36F68C618732CD3AE3BDEE3753F6F']"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "driver.window_handles#序号从0开始"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda\\lib\\site-packages\\ipykernel_launcher.py:1: DeprecationWarning: use driver.switch_to.window instead\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    }
   ],
   "source": [
    "driver.switch_to_window(driver.window_handles[1])#窗口停留在第一个窗口，此时爬取第二个窗口，要移动窗口到第二个窗口\n",
    "html=driver.page_source#移动后的网页源代码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "from bs4 import BeautifulSoup\n",
    "\n",
    "soup = BeautifulSoup(html,'lxml')\n",
    "dat=[i.text for i in soup.select('#books_content>div>div>a>p')]\n",
    "#dat=[i.text for i in soup.select('#books_content>div>div>a>p')]\n",
    "#dat[::2]#从下标0开始第一个到最后一个，每隔一个取一个值，使两种数据分开"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>名称</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python编程完全入门教程</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Python编程基础教程</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Python编程基础（视频讲解版）</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>计算思维与Python编程</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>青少年Python编程入门</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Python编程基础与应用</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Python编程无师自通 专业程序员的养成</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python编程从入门到精通</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>我的Python世界 玩《Minecraft我的世界》学Python编程</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                     名称\n",
       "0                        Python编程完全入门教程\n",
       "1                          Python编程基础教程\n",
       "2                     Python编程基础（视频讲解版）\n",
       "3                         计算思维与Python编程\n",
       "4                         青少年Python编程入门\n",
       "5                         Python编程基础与应用\n",
       "6                 Python编程无师自通 专业程序员的养成\n",
       "7                        Python编程从入门到精通\n",
       "8  我的Python世界 玩《Minecraft我的世界》学Python编程"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "pd.DataFrame({'名称':dat})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#json.dumps 将 Python 对象编码成 JSON 字符串\n",
    "#json.loads 将已编码的 JSON 字符串解码为 Python 对象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 爬取前程无忧数据分析职位"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "from selenium import webdriver\n",
    "from selenium.webdriver.support import expected_conditions as EC\n",
    "from selenium.webdriver.support.ui import WebDriverWait\n",
    "from selenium.webdriver.common.by import By\n",
    "\n",
    "driver=webdriver.Chrome()\n",
    "driver.get('https://search.51job.com')\n",
    "\n",
    "wait= WebDriverWait(driver,10)#等待10s，没用出来就报错"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "before=driver.current_window_handle#打开新的窗口后，给当前窗口做标记"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "search_btn=driver.find_element_by_css_selector(#根据selector找到对应的元素（selector是网页检查右键的copyselector）\n",
    "   '#keywordInput'\n",
    ")\n",
    "search_btn.send_keys('数据分析')#关键字的传输"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "confirm_btn=wait.until(#显式等待，直到元素被点击\n",
    " EC.element_to_be_clickable(\n",
    " (By.CSS_SELECTOR,'#search_btn')\n",
    " )\n",
    ")\n",
    "confirm_btn.click()#点击"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda\\lib\\site-packages\\ipykernel_launcher.py:1: DeprecationWarning: use driver.switch_to.window instead\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    }
   ],
   "source": [
    "driver.switch_to_window(driver.window_handles[0])#窗口停留在第一个窗口，此时爬取第二个窗口，要移动窗口到第二个窗口\n",
    "html=driver.page_source#移动后的网页源代码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['   8K数控编程/大数据分析 08-08发布      0.8-1万/月 异地招聘  |  无需经验  |  大专  |  招若干人  北京联科数信科技有限公司 民营公司 | 150-500人 计算机软件 申请职位',\n",
       " '   8k土木工程师/大数据分析 08-08发布      0.8-1万/月 异地招聘  |  无需经验  |  大专  |  招若干人 五险一金绩效奖金年终奖金周末双休 北京政星企业管理有限公司 民营公司 | 150-500人 计算机服务(系统、数据服务、维修) 申请职位',\n",
       " '   数据分析员（应届生） 08-08发布      4-6千/月 异地招聘  |  在校生/应届生  |  本科  |  招若干人 五险一金包吃交通补贴带薪年假补充医疗保险节日福利 德龙钢铁有限公司北京分公司 民营公司 | 10000人以上 机械/设备/重工 申请职位',\n",
       " '   双休诚聘数据分析师 08-04发布      0.5-1万/月 唐山  |  无需经验  |  招20人 做五休二周末双休五险一金 唐山唐郡信息技术有限公司 创业公司 | 50-150人 金融/投资/证券 申请职位',\n",
       " '   双休丨数据分析岗（非销售） 08-04发布      0.4-1.3万/月 唐山  |  无需经验  |  招6人 朝九晚五周末双休法定节假日接受零基础专业培训五险一金... 唐山珈盛信息技术有限公司 民营公司 | 少于50人 金融/投资/证券 申请职位',\n",
       " '   客户主任 08-08发布      6-8千/月 唐山  |  2年经验  |  大专  |  招1人 五险一金交通补贴餐饮补贴通讯补贴专业培训 农夫山泉股份有限公司石家庄办事处 民营公司   快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   五险一金+双休+课程顾问 08-08发布      6-8千/月 唐山  |  招5人 五险一金补充医疗保险补充公积金员工旅游专业培训出国机会... 唐山市路南区新航道英语培训学校有限公司 合资 | 10000人以上 教育/培训/院校 申请职位',\n",
       " '   销售专员 08-08发布      0.8-1万/月 唐山  |  1年经验  |  高中  |  招5人  郑州永三网络科技有限公司 民营公司 | 50-150人 计算机软件 申请职位',\n",
       " '   物流组长 08-08发布      3-4.5千/月 唐山  |  2年经验  |  大专  |  招1人 五险一金交通补贴餐饮补贴通讯补贴股票期权专业培训年终奖金... 中顺洁柔纸业股份有限公司 上市公司 | 5000-10000人 印刷/包装/造纸 申请职位',\n",
       " '   高薪诚聘销售顾问 08-08发布      1.5-2万/月 唐山  |  无需经验  |  大专  |  招5人  郑州永三网络科技有限公司 民营公司 | 50-150人 互联网/电子商务 申请职位',\n",
       " '   客户经理/销售(21/20届）-保定 08-08发布      0.5-1万/月 异地招聘  |  1年经验  |  本科  |  招10人 绩效奖金带薪年假交通补助通讯津贴午餐补助定期体检节日礼物... 杭银消费金融股份有限公司 合资 | 150-500人 金融/投资/证券 申请职位',\n",
       " '   业务内勤 08-07发布      3-4千/月 唐山  |  无需经验  |  大专  |  招1人 周末双休五险一金节日福利员工旅游定期体检餐饮补贴通讯补贴... 瑞茂通供应链管理股份有限公司 上市公司 | 500-1000人 多元化业务集团公司 申请职位',\n",
       " '   唐山营养（高级）推广代表 08-07发布       唐山  |  2年经验  |  大专  |  招1人 做五休二带薪年假五险一金补充医疗保险交通补贴通讯补贴... 美赞臣营养品（中国）有限公司 外资（欧美） | 500-1000人 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   办事处经理 08-07发布       唐山  |  1年经验  |  高中  |  招1人 全国五百强领导nice 西王集团 民营公司 | 10000人以上 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   客户经理/销售主管 08-07发布      6-8千/月 唐山  |  3-4年经验  |  大专  |  招1人 年终奖金绩效奖金专业培训五险一金 深圳市万生堂实业有限公司 民营公司 | 500-1000人 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   OTC销售经理 08-07发布      0.8-1万/月 唐山  |  大专  |  招若干人 周末双休绩效奖金节日福利交通补贴餐饮补贴加班补贴通讯补贴... 珠海润都制药股份有限公司 上市公司 | 1000-5000人 制药/生物工程 申请职位',\n",
       " '   临床代表（精神神经线） 08-07发布      1-1.5万/月 唐山  |  2年经验  |  大专  |  招1人 五险一金补充公积金交通补贴餐饮补贴通讯补贴绩效奖金... 浙江京新药业股份有限公司 上市公司 | 1000-5000人 制药/生物工程 申请职位',\n",
       " '   电机工艺工程师 08-07发布      0.5-1.5万/月 异地招聘  |  2年经验  |  大专  |  招1人 五险一金员工旅游交通补贴股票期权餐饮补贴通讯补贴专业培训... 江苏嘉轩智能工业科技股份有限公司 民营公司 | 150-500人 机械/设备/重工 申请职位',\n",
       " '   分公司经理（唐山） 08-07发布      20-30万/年 唐山  |  5-7年经验  |  大专  |  招1人 五险一金交通补贴餐饮补贴通讯补贴专业培训 重庆希尔安药业有限公司 民营公司 | 1000-5000人 制药/生物工程 申请职位',\n",
       " '   分析测试工程师 08-07发布      0.9-1.2万/月 唐山  |  3-4年经验  |  硕士  |  招1人  北京东方雨虹防水技术股份有限公司 上市公司 | 1000-5000人 建筑/建材/工程 申请职位',\n",
       " '   学业规划师 08-06发布      4.5-6千/月 唐山  |  本科  |  招5人 五险一金专业培训定期体检员工旅游出国机会 唐山新东方学校 民营公司 | 150-500人 教育/培训/院校 申请职位',\n",
       " '   IE主管/经理（总部编制） 08-06发布      1.3-1.5万/月 异地招聘  |  5-7年经验  |  大专  |  招2人 带薪年假五险一金绩效奖金全勤奖节日福利通讯补贴员工旅游... 森大集团 民营公司 | 5000-10000人 建筑/建材/工程 申请职位',\n",
       " '   造价师 08-04发布      3-5千/月 唐山  |  无需经验  |  大专  |  招若干人 绩效奖金五险一金餐饮补贴专业培训员工旅游定期体检 唐山市八方锦秀建筑设计有限公司 民营公司 | 50-150人 建筑/建材/工程 申请职位',\n",
       " '   网络推广专员 08-03发布      3-5千/月 唐山  |  无需经验  |  大专  |  招2人  唐山牙博士口腔医院 民营公司 | 50-150人 医疗/护理/卫生 申请职位',\n",
       " '   销售经理 08-02发布      0.5-1万/月 唐山  |  3-4年经验  |  大专  |  招1人 五险一金定期体检专业培训绩效奖金生日福利节日福利带薪年假 新希望乳业股份有限公司 上市公司 | 5000-10000人 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   造价员 08-01发布      4.5-6千/月 唐山  |  2年经验  |  大专  |  招1人  河北龙信控股有限公司 民营公司 | 150-500人 建筑/建材/工程 申请职位',\n",
       " '   社群运营主管（河北唐山） 07-31发布      6-8千/月 唐山  |  2年经验  |  大专  |  招1人 五险一金员工旅游年终奖金绩效奖金专业培训定期体检带薪年假... 海普诺凯营养品有限公司 外资（非欧美） | 1000-5000人 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   个护客户经理 07-29发布      6-8万/年 唐山  |  2年经验  |  大专  |  招3人 五险一金年终奖金绩效奖金专业培训定期体检通讯补贴餐饮补贴... 纳爱斯集团有限公司 民营公司 | 10000人以上 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   研发型市场专员 07-28发布      4-8千/月 唐山  |  1年经验  |  硕士  |  招2人 五险一金员工旅游餐饮补贴专业培训年终奖金绩效奖金 中财期货有限公司 民营公司 | 150-500人 金融/投资/证券 申请职位',\n",
       " '   平台拓展专员（丰南） 07-27发布      4.5-6千/月 唐山  |  1年经验  |  中专  |  招1人 五险一金交通补贴餐饮补贴通讯补贴高温补贴 北京大旺食品有限公司天津分公司 合资 | 500-1000人 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   销售经理 07-23发布      0.8-1万/月 唐山  |  2年经验  |  大专  |  招2人  唐山君熙房地产开发有限公司 民营公司 | 50-150人 房地产 申请职位',\n",
       " '   物流订单员 07-22发布      5-8千/月 唐山  |  2年经验  |  大专  |  招2人 周末双休带薪年假五险一金专业培训交通补贴通讯补贴免费午餐... 中国达能饮料 外资（欧美） | 5000-10000人 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   市场营销主管[唐山] 07-21发布      0.8-1万/月 唐山  |  5-7年经验  |  大专  |  招1人 做五休二带薪年假五险一金专业培训节日福利绩效奖金交通补贴... 美克家居-美克美家 上市公司 | 10000人以上 家具/家电/玩具/礼品 申请职位',\n",
       " '   玛氏箭牌-地区销售高级主管-唐山 07-20发布      0.8-1.2万/月 唐山  |  无需经验  |  招1人  玛氏中国 外资（欧美） | 10000人以上 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   生物技术工程师 07-15发布      5-8千/月 唐山  |  1年经验  |  硕士  |  招1人 五险一金免费班车餐饮补贴绩效奖金年终奖金定期体检提供住宿... 河北圣雪大成唐山制药有限责任公司 国企 | 150-500人 制药/生物工程 申请职位',\n",
       " '   新媒体编辑 07-14发布      3-5千/月 唐山  |  1年经验  |  大专  |  招1人  格学教育科技（唐山）有限公司 民营公司 | 50-150人 教育/培训/院校 申请职位',\n",
       " '   天猫运营、天猫店长、网店主管 07-07发布      0.7-1万/月 异地招聘  |  3-4年经验  |  大专  |  招2人 五险单休全勤奖绩效奖金带薪年假餐饮补贴节日福利 唐山瑷特斯食品有限公司 民营公司 | 50-150人 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   质量工程师(000557)（唐山） 07-06发布       唐山  |  在校生/应届生  |  本科  |  招3人  长虹多媒体产业公司 国企   影视/媒体/艺术/文化传播 申请职位',\n",
       " '   研发副总 07-03发布      4-7万/月 异地招聘  |  10年以上经验  |  本科  |  招1人 做五休二周末双休带薪年假五险一金包吃包住宿绩效奖金 中际联合（北京）科技股份有限公司 合资 | 500-1000人 机械/设备/重工 申请职位',\n",
       " '   全国***的信用卡客户经理招聘 07-02发布      6-8千/月 唐山  |  大专  |  招若干人  招商银行股份有限公司唐山分行 上市公司 | 10000人以上 银行 申请职位',\n",
       " '   内分泌科医师 06-28发布      0.4-1万/月 唐山  |  招4人 五险一金餐饮补贴绩效奖金 唐山康诚医院有限公司 民营公司 | 150-500人 医疗/护理/卫生 申请职位',\n",
       " '   发货员 06-28发布      3-5千/月 唐山  |  1年经验  |  大专  |  招1人 五险一金全勤奖节日福利高温补贴 惠达卫浴股份有限公司 上市公司 | 5000-10000人 原材料和加工 申请职位',\n",
       " '   综合金融业务部本部分部产品主管 06-27发布      4.5-6千/月 唐山  |  无需经验  |  本科  |  招1人 周末双休带薪年假六险二金专业培训年终奖金节日福利生日福利... 中国平安财产保险股份有限公司唐山中心支公司 上市公司 | 500-1000人 金融/投资/证券 申请职位',\n",
       " '   区域销售经理 06-10发布      3-4万/月 唐山  |  招50人 五险一金员工旅游通讯补贴绩效奖金 成都市雲凌网络科技有限公司 民营公司 | 50-150人 互联网/电子商务 申请职位',\n",
       " '   招募区域经理-唐山 08-07发布      100万以上/年 唐山  |  3-4年经验  |  中专  |  招若干人 弹性工作 福建省凯洛酒庄投资有限公司 民营公司 | 50-150人 快速消费品(食品、饮料、化妆品) 申请职位',\n",
       " '   大数据分析师（接受无基础） 08-08发布      0.8-1万/月 异地招聘  |  无需经验  |  大专  |  招若干人  北京联科数信科技有限公司 民营公司 | 150-500人 计算机软件 申请职位',\n",
       " '   8K电气自动化/大数据分析师 08-08发布      0.8-1万/月 异地招聘  |  无需经验  |  大专  |  招若干人  北京联科数信科技有限公司 民营公司 | 150-500人 计算机软件 申请职位',\n",
       " '   8K机械设计大数据分析师（急） 08-08发布      0.8-1万/月 异地招聘  |  无需经验  |  大专  |  招若干人 五险一金绩效奖金年终奖金周末双休 北京政星企业管理有限公司 民营公司 | 150-500人 计算机服务(系统、数据服务、维修) 申请职位',\n",
       " '   双休丨诚聘数据分析 08-04发布      0.5-1万/月 唐山  |  无需经验  |  招20人 做五休二周末双休五险一金 唐山唐郡信息技术有限公司 创业公司 | 50-150人 金融/投资/证券 申请职位',\n",
       " '   聘数据分析助理（非销售） 08-04发布      0.4-1.3万/月 唐山  |  无需经验  |  招11人 朝九晚五周末双休法定节假日接受零基础专业培训五险一金... 唐山珈盛信息技术有限公司 民营公司 | 少于50人 金融/投资/证券 申请职位']"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from bs4 import BeautifulSoup\n",
    "\n",
    "soup = BeautifulSoup(html,'lxml')\n",
    "[i.text for i in soup.select('body > div:nth-child(4) > div.j_result > div > div.leftbox > div:nth-child(4) > div.j_joblist>div')]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
